type t 'a 'b;
value create : int -> t 'a 'b;
value empty: unit -> t 'a 'b;
value clear : t 'a 'b -> unit;
value length : t 'a 'b -> int;
value add : t 'a 'b -> 'a -> 'b -> unit;
value find : t 'a 'b -> 'a -> HSet.t 'b;
value mem : t 'a 'b -> 'a -> bool;
value mem_val : t 'a 'b -> 'a -> 'b -> bool;
value remove : t 'a 'b -> 'a -> unit;
value pop: t 'a 'b -> 'a -> HSet.t 'b;
value remove_val : t 'a 'b -> 'a -> 'b -> unit;
value iter : ('a -> HSet.t 'b -> unit) -> t 'a 'b -> unit;
value iter_vals: ('b -> unit) -> t 'a 'b -> 'a -> unit;
